CSS ์๋ธ๊ทธ๋ฆฌ๋์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๊ณ ๊ธ ๊ทธ๋ฆฌ๋ ์์์ผ๋ก ๋ณต์กํ ๋ค์ฐจ์ ๋ ์ด์์์ ๋ง๋์ธ์. ๋ฐ์ํ ๋์์ธ์ ์ํ ๊ณ ๊ธ ๊ธฐ์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ง์คํฐํ์ธ์.
CSS ์๋ธ๊ทธ๋ฆฌ๋ ๋ค์ฐจ์: ๋ณต์กํ ๊ทธ๋ฆฌ๋ ์์ ํ์ฉ
CSS Grid Layout์ ํ์ด์ง ๊ตฌ์กฐ์ ๋ํ ๋น๊ตํ ์ ์๋ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์น ๋์์ธ์ ํ๋ช ์ ์ผ์ผ์ผฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ ์ด์์์ด ๋์ฑ ๋ณต์กํด์ง์ ๋ฐ๋ผ ๋ณด๋ค ๊ณ ๊ธ ๊ธฐ์ ์ ๋ํ ํ์์ฑ์ด ๋ฐ์ํฉ๋๋ค. CSS Subgrid๋ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ด ์์ ๊ทธ๋ฆฌ๋์ ํธ๋ ์ ์๋ฅผ ์์ํ ์ ์๋๋ก ํ์ฌ Grid Layout์ ํฅ์์ํค๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด ์์๊ฐ ์ ์ฒด ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ์์ ์ ๋ ฌ์ ์ ์งํ๋ฉด์ ํ๊ณผ ์ด์ ๊ฑธ์ณ ํ์ฅ๋ ์ ์๋ ์ง์ ํ ๋ค์ฐจ์ ๋ ์ด์์์ ์ ์ฌ๋ ฅ์ ์ด ์ ์์ต๋๋ค.
CSS Grid Layout ์ดํด: ๋น ๋ฅธ ๋ณต์ต
Subgrid๋ฅผ ์ดํด๋ณด๊ธฐ ์ ์ CSS Grid Layout์ ํต์ฌ ๊ฐ๋ ์ ๊ฐ๋ตํ๊ฒ ๊ฒํ ํด ๋ณด๊ฒ ์ต๋๋ค.
- ๊ทธ๋ฆฌ๋ ์ปจํ
์ด๋:
display: grid๋๋display: inline-grid๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆฌ๋ ์ปจํ ์คํธ๋ฅผ ์ค์ ํ๋ ์์ ์์์ ๋๋ค. - ๊ทธ๋ฆฌ๋ ํญ๋ชฉ: ๊ทธ๋ฆฌ๋ ๋ด์ ๋ฐฐ์น๋๋ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์ ์ง์ ์ ์ธ ์์์ ๋๋ค.
- ๊ทธ๋ฆฌ๋ ํธ๋:
grid-template-rows๋ฐgrid-template-columns์ ๊ฐ์ ์์ฑ์ผ๋ก ์ ์๋ ๊ทธ๋ฆฌ๋์ ํ๊ณผ ์ด์ ๋๋ค. ์ด๋ ํ๊ณผ ์ด์ ํฌ๊ธฐ์ ์๋ฅผ ์ ์ํฉ๋๋ค. - ๊ทธ๋ฆฌ๋ ์ : ๊ทธ๋ฆฌ๋ ํธ๋์ ๊ตฌ๋ถํ๋ ์ํ ๋ฐ ์์ง์ ์ ๋๋ค. 1๋ถํฐ ์์ํ์ฌ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง๋๋ค.
- ๊ทธ๋ฆฌ๋ ์์ญ:
grid-template-areas๋ก ์ ์๋ ๊ทธ๋ฆฌ๋ ๋ด์ ๋ช ๋ช ๋ ์์ญ์ ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ณธ ์ฌํญ์ ํตํด CSS Subgrid์ ๋ณต์ก์ฑ๊ณผ ์ด์ ์ ์ดํด๋ณผ ์ ์์ต๋๋ค.
CSS Subgrid ์๊ฐ: ๊ทธ๋ฆฌ๋ ํธ๋ ์์
Subgrid๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ์์ฒด๊ฐ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋๊ฐ ๋์ด ์์ ๊ทธ๋ฆฌ๋์์ ํ ๋ฐ/๋๋ ์ด ํธ๋์ ์์ํ ์ ์์ต๋๋ค. ์ฆ, ์๋ธ๊ทธ๋ฆฌ๋๋ ์์ ๊ทธ๋ฆฌ๋ ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ๋ ฌํ์ฌ ํนํ ์์ ๊ทธ๋ฆฌ๋์์ ์ฌ๋ฌ ํ ๋๋ ์ด์ ๊ฑธ์ณ ์๋ ์์๋ฅผ ์ฒ๋ฆฌํ ๋ ์์ง๋ ฅ ์๊ณ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ๋ ์ด์์์ ๋ง๋ค ์ ์์ต๋๋ค.
์๋ธ๊ทธ๋ฆฌ๋๋ฅผ ํ์ฑํํ๋ ์ฃผ์ ์์ฑ์ grid-template-rows: subgrid ๋ฐ/๋๋ grid-template-columns: subgrid์
๋๋ค. ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ์ ์ฉํ๋ฉด ์ด๋ฌํ ์์ฑ์ ๋ธ๋ผ์ฐ์ ์ ์์ ๊ทธ๋ฆฌ๋์ ํด๋น ํธ๋์ ์ฌ์ฉํ๋๋ก ์ง์ํฉ๋๋ค.
๊ธฐ๋ณธ ์๋ธ๊ทธ๋ฆฌ๋ ๊ตฌํ
๊ฐ๋จํ ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
.grid-container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
grid-template-rows: auto auto auto;
}
.grid-item {
/* ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ์คํ์ผ */
}
.subgrid-item {
display: grid;
grid-template-columns: subgrid;
}
์ด ์์์ .grid-container๋ 3๊ฐ์ ์ด๊ณผ 3๊ฐ์ ํ์ผ๋ก ์ฃผ ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค. .subgrid-item์ ์ด์ ์๋ธ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ .grid-container ๋ด์ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์
๋๋ค. ์ฆ, .subgrid-item ๋ด๋ถ์ ์ด์ .grid-container์ ์ด๊ณผ ์๋ฒฝํ๊ฒ ์ ๋ ฌ๋ฉ๋๋ค.
์๋ธ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ ๋ค์ฐจ์ ๋ ์ด์์
Subgrid์ ์ค์ ํ์ ๋ค์ฐจ์ ๋ ์ด์์์ ๋ง๋ค ๋ ๋ํ๋ฉ๋๋ค. ์ด๋ฌํ ๋ ์ด์์์๋ ์์๊ฐ ์ฌ๋ฌ ํ๊ณผ ์ด์ ๊ฑธ์ณ ์๊ณ ์ ๋ ฌ์ด ์ค์ํ ์ค์ฒฉ๋ ๊ทธ๋ฆฌ๋๊ฐ ํฌํจ๋ฉ๋๋ค.
์: ๋ณต์กํ ์ ํ ์นด๋
์ด๋ฏธ์ง, ์ ๋ชฉ, ์ค๋ช ๋ฐ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ ๋ณด๋ฅผ ํ์ํด์ผ ํ๋ ์ ํ ์นด๋๋ฅผ ์์ํด ๋ณด์ญ์์ค. ๋ ์ด์์์ ์ ์ฐํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ ์ํด์ผ ํฉ๋๋ค.
.product-card {
display: grid;
grid-template-columns: 1fr 2fr;
grid-template-rows: auto auto auto;
gap: 10px;
}
.product-image {
grid-row: 1 / span 2;
}
.product-details {
display: grid;
grid-template-columns: subgrid;
grid-template-rows: auto auto;
}
.product-title {
/* ์ ๋ชฉ ์คํ์ผ */
}
.product-description {
/* ์ค๋ช
์คํ์ผ */
}
.additional-info {
grid-column: 1 / -1; /* ์ ํ ์นด๋์ ๋ชจ๋ ์ด์ ๊ฑธ์ณ ์์ */
}
์ด ์์์:
.product-card๋ ์ฃผ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์ ๋๋ค..product-image๋ ์ฒ์ ๋ ํ์ ๊ฑธ์ณ ์์ต๋๋ค..product-details๋.product-card์์ ์ด ํธ๋์ ์์ํ๋ ์๋ธ๊ทธ๋ฆฌ๋๋ก, ํด๋น ์ฝํ ์ธ ๊ฐ ์ฃผ ๊ทธ๋ฆฌ๋ ์ด๊ณผ ์ ๋ ฌ๋๋๋ก ํฉ๋๋ค..additional-info๋ ์ ํ ์นด๋์ ๋ชจ๋ ์ด์ ๊ฑธ์ณ ์ด๋ฏธ์ง ๋ฐ ์ธ๋ถ ์ ๋ณด ์๋์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ด ๊ตฌ์กฐ๋ ์ ํ ์นด๋์ ๋ํ ์ ์ฐํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ๋ ์ด์์์ ์ ๊ณตํฉ๋๋ค. ์๋ธ๊ทธ๋ฆฌ๋๋ .product-details ๋ด์ ์ ๋ชฉ๊ณผ ์ค๋ช
์ด ์ฃผ ๊ทธ๋ฆฌ๋์ ์ด ๊ตฌ์กฐ์ ์๋ฒฝํ๊ฒ ์ ๋ ฌ๋๋๋ก ํฉ๋๋ค.
์: ๋ณต์กํ ํ ์ด๋ธ ๋ ์ด์์
๋ณํฉ๋ ์ ์ด ์๋ ํ ์ด๋ธ์ ๋ ์ด์์ ์ ๋ชฝ์ด ๋ ์ ์์ต๋๋ค. Subgrid๋ ์ด๋ฅผ ๋งค์ฐ ๋จ์ํํฉ๋๋ค.
.table-container {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: auto auto auto;
}
.header-cell {
grid-column: span 2; /* ์: ๋ ์ด์ ๊ฑธ์ณ ์๋ ์
*/
}
.subgrid-row {
display: grid;
grid-template-columns: subgrid;
}
.data-cell {
/* ๋ฐ์ดํฐ ์
์คํ์ผ */
}
์ฌ๊ธฐ์ .table-container๋ ์ ์ฒด ํ
์ด๋ธ ๊ทธ๋ฆฌ๋๋ฅผ ์ ์ํฉ๋๋ค. `header-cell` ์์๋ ์ฌ๋ฌ ์ด์ ๊ฑธ์ณ ์์ ์ ์์ต๋๋ค. `subgrid-row`๋ ์๋ธ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ์ฌ `data-cell` ์์๊ฐ ํค๋ ์
๋ฒ์์ ๊ด๊ณ์์ด ์์ ๊ทธ๋ฆฌ๋์ ์ ์๋ ์ด๊ณผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ๋๋๋ก ํฉ๋๋ค.
CSS Subgrid ์ฌ์ฉ์ ์ด์
- ํฅ์๋ ๋ ์ด์์ ์ ์ด: Subgrid๋ ํนํ ๋ณต์กํ ๋ ์ด์์์์ ์์ ๋ฐฐ์น ๋ฐ ์ ๋ ฌ์ ๋ํ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋จ์ํ๋ ์ฝ๋: ๋ณต์กํ ๊ณ์ฐ ๋ฐ ์๋ ์กฐ์ ์ ํ์์ฑ์ ์ค์ฌ ๋ณด๋ค ๊น๋ํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ๋ง๋ญ๋๋ค.
- ํฅ์๋ ๋ฐ์์ฑ: Subgrid๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ํํ๊ฒ ์ ์ํ๋ ๋ณด๋ค ์ ์ฐํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ๋์์ธ์ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ ํฐ ์ผ๊ด์ฑ: ์ ์ฒด ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ์์ ์ ๋ ฌ์ ์ ์งํ์ฌ ์น์ฌ์ดํธ์ ์ฌ๋ฌ ์น์ ์์ ์๊ฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ ๋์ ์ ์ง ๊ด๋ฆฌ์ฑ: ์์ ๊ทธ๋ฆฌ๋์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์๋ธ๊ทธ๋ฆฌ๋๋ก ์๋ ์ ํ๋์ด ๋ ์ด์์ ์กฐ์ ์ ๋จ์ํํ๊ณ ์ค๋ฅ ์ํ์ ์ค์ ๋๋ค.
๋ธ๋ผ์ฐ์ ํธํ์ฑ
CSS Subgrid์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์์ ์ด์ Chrome, Firefox, Safari ๋ฐ Edge๋ฅผ ํฌํจํ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ๋๋ฆฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋์ ์ฌ์ฉ์๊ฐ ์ ์ ํ ๋ธ๋ผ์ฐ์ ์ง์์ ๋ฐ๋๋ก ํ๋ ค๋ฉด Can I use์ ๊ฐ์ ์น์ฌ์ดํธ์์ ํ์ฌ ๋ธ๋ผ์ฐ์ ํธํ์ฑ ํ๋ฅผ ํ์ธํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
Subgrid๋ฅผ ์ง์ํ์ง ์๋ ์ด์ ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ๋์ฒด ์ ๋ต์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- Subgrid๊ฐ ์๋ CSS Grid: ํ์ค CSS Grid ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ ์ด์์์ ๋ณต์ ํ๋ฉด ๋ ๋ง์ ์๋ ์กฐ์ ์ด ํ์ํ ์ ์์ต๋๋ค.
- Flexbox: ๋ ๊ฐ๋จํ ๋ ์ด์์์ ๊ฒฝ์ฐ Flexbox๋ฅผ ๋์ฒด ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
- ๊ธฐ๋ฅ ์ฟผ๋ฆฌ:
@supports๋ฅผ ์ฌ์ฉํ์ฌ Subgrid ์ง์์ ๊ฐ์งํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉํฉ๋๋ค.
CSS Subgrid ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
- ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ ๊ณํ: Subgrid๋ฅผ ๊ตฌํํ๊ธฐ ์ ์ ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ๋ฅผ ์ ์คํ๊ฒ ๊ณํํ๊ณ Subgrid๊ฐ ๊ฐ์ฅ ์ ์ฉํ ์์ญ์ ์๋ณํฉ๋๋ค.
- ์๋ฏธ ์๋ ํด๋์ค ์ด๋ฆ ์ฌ์ฉ: ์ค๋ช ์ ์ธ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ฝ๋ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํต๋๋ค.
- ๊ณผ๋ํ ์ค์ฒฉ ๋ฐฉ์ง: Subgrid๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์ฒฉ๋ ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ๋ ์ด์์์ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ธ ์ ์์ผ๋ฏ๋ก ๊ณผ๋ํ ์ค์ฒฉ์ ํผํ์ญ์์ค.
- ์ฒ ์ ํ ํ ์คํธ: ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ์ฅ์น์์ ๋ ์ด์์์ ํ ์คํธํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋๊ณ ๋ฐ์ํ๋์ง ํ์ธํฉ๋๋ค.
- ๋์ฒด ์ ๊ณต: Subgrid๋ฅผ ์ง์ํ์ง ์๋ ์ด์ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๋์ฒด ์ ๋ต์ ๊ตฌํํฉ๋๋ค.
- ์ ๊ทผ์ฑ ๊ณ ๋ ค: ๋ ์ด์์์ด ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ์๋ฏธ ์ฒด๊ณ HTML์ ์ฌ์ฉํ๊ณ ์ด๋ฏธ์ง์ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ: ๊ทธ๋ฆฌ๋ ํญ๋ชฉ ์๋ฅผ ์ต์ํํ๊ณ ๋ณต์กํ ๊ณ์ฐ์ ํผํ์ฌ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํฉ๋๋ค.
๊ณ ๊ธ ์๋ธ๊ทธ๋ฆฌ๋ ๊ธฐ์
์๋ธ๊ทธ๋ฆฌ๋์์ ํธ๋ ํ์ฅ
์ผ๋ฐ Grid Layout๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก grid-column: span X ๋๋ grid-row: span Y๋ฅผ ์ฌ์ฉํ์ฌ ํญ๋ชฉ์ด ์๋ธ๊ทธ๋ฆฌ๋ ๋ด์์ ์ฌ๋ฌ ํธ๋์ ๊ฑธ์ณ ์๋๋ก ํ ์ ์์ต๋๋ค.
.subgrid-item {
display: grid;
grid-template-columns: subgrid;
}
.spanning-item {
grid-column: span 2;
}
์ด๋ ๊ฒ ํ๋ฉด .spanning-item์ด ์๋ธ๊ทธ๋ฆฌ๋ ๋ด์์ ๋ ๊ฐ์ ์ด ํธ๋์ ์ฐจ์งํฉ๋๋ค.
๋ช ๋ช ๋ ๊ทธ๋ฆฌ๋ ์ ์ฌ์ฉ
์์ ๊ทธ๋ฆฌ๋์์ ๋ช ๋ช ๋ ๊ทธ๋ฆฌ๋ ์ ์ ์ฌ์ฉํ๊ณ ์๋ธ๊ทธ๋ฆฌ๋์์ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
.grid-container {
display: grid;
grid-template-columns: [start] 1fr [content-start] 2fr [content-end] 1fr [end];
}
.subgrid-item {
display: grid;
grid-template-columns: subgrid;
}
.positioned-item {
grid-column: content-start / content-end;
}
์ด ์์์ .positioned-item์ content-start ๋ฐ content-end๋ผ๋ ๊ทธ๋ฆฌ๋ ์ ์ฌ์ด์ ๋ฐฐ์น๋ฉ๋๋ค.
์๋ธ๊ทธ๋ฆฌ๋์ ์๋ ๋ฐฐ์น ๊ฒฐํฉ
grid-auto-flow ์์ฑ๊ณผ ์๋ธ๊ทธ๋ฆฌ๋๋ฅผ ๊ฒฐํฉํ์ฌ ์๋ธ๊ทธ๋ฆฌ๋ ๋ด์์ ํญ๋ชฉ์ด ์๋์ผ๋ก ๋ฐฐ์น๋๋ ๋ฐฉ์์ ์ ์ดํ ์ ์์ต๋๋ค.
.subgrid-item {
display: grid;
grid-template-columns: subgrid;
grid-auto-flow: row dense;
}
์ด๋ ๊ฒ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ธ๊ทธ๋ฆฌ๋์ ํญ๋ชฉ์ ์๋์ผ๋ก ๋ฐฐ์นํ์ฌ ๊ฐ๊ฒฉ์ ์ฑ์ฐ๊ณ ๋ณด๋ค ์ฝคํฉํธํ ๋ ์ด์์์ ๋ง๋ญ๋๋ค.
์ค์ ์๋ธ๊ทธ๋ฆฌ๋ ์ฌ์ฉ ์
๋์๋ณด๋ ๋ ์ด์์
๋์๋ณด๋๋ ์ฌ๋ฌ ์น์ ๊ณผ ๊ตฌ์ฑ ์์๊ฐ ์๋ ๋ณต์กํ ๋ ์ด์์์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Subgrid๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ๋์๋ณด๋์ ๋ํ ์ผ๊ด์ฑ ์๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด ๋ชจ๋ ์์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ๋๋๋ก ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฌ์ด๋๋ฐ, ์ฃผ ์ฝํ ์ธ ์์ญ ๋ฐ ๋ฐ๋ฅ๊ธ์ด ์๋ ๋์๋ณด๋๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. Subgrid๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๊ฐ ์น์ ๋ด์ ์ฝํ ์ธ ๋ฅผ ๋์๋ณด๋์ ์ ์ฒด ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ์ ์ ๋ ฌํ ์ ์์ต๋๋ค.
์ก์ง ๋ ์ด์์
์ก์ง ๋ ์ด์์์๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฏธ์ง, ํ ์คํธ ๋ฐ ๊ธฐํ ์์๊ฐ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฐฐ์ด๋ ๋ณต์กํ ๋์์ธ์ด ํฌํจ๋ฉ๋๋ค. Subgrid๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ง ๋ ์ด์์์ ๋ํ ์ ์ฐํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด ๋์ ์ฝํ ์ธ ๋ฐฐ์น ๋ฐ ์ ๋ ฌ์ ํ์ฉํ ์ ์์ต๋๋ค.
์ฃผ ๊ธฐ์ฌ, ์ฌ์ด๋๋ฐ ๋ฐ ๊ด๊ณ ๊ฐ ์๋ ์ก์ง ๋ ์ด์์์ ์์ํด ๋ณด์ญ์์ค. Subgrid๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๊ฐ ์น์ ๋ด์ ์ฝํ ์ธ ๋ฅผ ์ก์ง์ ์ ์ฒด ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ์ ์ ๋ ฌํ ์ ์์ต๋๋ค.
์ ์ ์๊ฑฐ๋ ์ ํ ๋ชฉ๋ก
์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ๋ ์ ํ ๋ชฉ๋ก์ ๊ทธ๋ฆฌ๋ ํ์์ผ๋ก ํ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Subgrid๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ ๋ชฉ๋ก์ ๋ํ ์ผ๊ด์ฑ ์๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด ๋ชจ๋ ์ ํ ์นด๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ๋๊ณ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ง๊ฒ ์กฐ์ ๋๋๋ก ํ ์ ์์ต๋๋ค.
์ด๋ฏธ์ง, ์ ๋ชฉ, ์ค๋ช ๋ฐ ๊ฐ๊ฒฉ์ด ํฌํจ๋ ์ฌ๋ฌ ์ ํ ์นด๋๊ฐ ์๋ ์ ํ ๋ชฉ๋ก ํ์ด์ง๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. Subgrid๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์ ํ ์นด๋ ๋ด์ ์์๋ฅผ ์ ํ ๋ชฉ๋ก ํ์ด์ง์ ์ ์ฒด ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ์ ์ ๋ ฌํ ์ ์์ต๋๋ค.
CSS Grid ๋ฐ Subgrid์ ๋ฏธ๋
CSS Grid Layout ๋ฐ Subgrid๋ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ์ถ๊ฐ๋๋ฉด์ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์์ด ๊ณ์ ๊ฐ์ ๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ๊ธฐ์ ์ ์ต์ ๋ฐ์ํ ์น ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ๋์ฑ ํ์์ ์ด ๋ ๊ฒ์ ๋๋ค.
CSS Grid ๋ฐ Subgrid์ ๋ฏธ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฑ๋ฅ ํฅ์: Grid ๋ฐ Subgrid ๋ ์ด์์์ ๋ ๋๋ง ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ ์ต์ ํ์ ๋๋ค.
- ๋์ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ: ๋ ์ด์์ ๋ฐ ์ ๋ ฌ์ ๋ํ ํจ์ฌ ๋ ํฐ ์ ์ด๋ฅผ ์ ๊ณตํ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋๋ค.
- ๋ค๋ฅธ ์น ๊ธฐ์ ๊ณผ์ ๋ ๋์ ํตํฉ: ์น ๊ตฌ์ฑ ์์ ๋ฐ JavaScript ํ๋ ์์ํฌ์ ๊ฐ์ ๋ค๋ฅธ ์น ๊ธฐ์ ๊ณผ์ ์ํํ ํตํฉ์ ๋๋ค.
๊ฒฐ๋ก : Subgrid์ ํ์ ํ์ฉํ์ญ์์ค.
CSS Subgrid๋ ๊ณ ๊ธ ๊ทธ๋ฆฌ๋ ์์์ผ๋ก ๋ณต์กํ ๋ค์ฐจ์ ๋ ์ด์์์ ๋ง๋๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค. Grid Layout์ ๊ธฐ๋ณธ ์ฌํญ๊ณผ Subgrid์ ๊ธฐ๋ฅ์ ์ดํดํ๋ฉด ์น ๋์์ธ์ ๋ํ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด๊ณ ์๊ฐ์ ์ผ๋ก ๋ ๋งค๋ ฅ์ ์ด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
Subgrid์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์์ด ๊ณ์ ๊ฐ์ ๋จ์ ๋ฐ๋ผ ์น ๊ฐ๋ฐ์ ํดํท์์ ์ ์ ๋ ์ค์ํ ๋ถ๋ถ์ด ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ Subgrid์ ํ์ ํ์ฉํ๊ณ ํด๋น ๊ธฐ๋ฅ์ ์คํํ์ฌ ๋๋๊ณ ํ์ ์ ์ธ ์น ๋ ์ด์์์ ๋ง๋์ญ์์ค.
CSS Subgrid์ ์ ์ฌ๋ ฅ์ ์คํํ๊ณ ํ์ํ๋ ๊ฒ์ ๋๋ ค์ํ์ง ๋ง์ญ์์ค. ๊ฐ๋ฅ์ฑ์ ๋ฌด๊ถ๋ฌด์งํ๋ฉฐ ๊ฒฐ๊ณผ๋ ์ ๋ง ์ธ์์ ์ผ ์ ์์ต๋๋ค. ์ฆ๊ฑฐ์ด ์ฝ๋ฉํ์ธ์!